[IA64] MCA support - Add lid and percpu paddr table
authorawilliam@xenbuild.aw <awilliam@xenbuild.aw>
Sun, 29 Oct 2006 16:27:19 +0000 (09:27 -0700)
committerawilliam@xenbuild.aw <awilliam@xenbuild.aw>
Sun, 29 Oct 2006 16:27:19 +0000 (09:27 -0700)
Signed-off-by: Yutaka Ezaki <yutaka.ezaki@jp.fujitsu.com>
Signed-off-by: Masaki Kanno <kanno.masaki@jp.fujitsu.com>
Signed-off-by: Kazuhiro Suzuki <kaz@jp.fujitsu.com>
xen/arch/ia64/xen/mm_init.c

index f9a44a43de410a6bc8e59d9a29ce6056f7360da6..cecb879551781366b03d75c5a278ddaf2a389b35 100644 (file)
 
 #include <xen/sched.h>
 #include <asm/vhpt.h>
+#include <asm/xenmca.h>
+#include <asm/meminit.h>
+#include <asm/page.h>
+
+struct ia64_mca_tlb_info ia64_mca_tlb_list[NR_CPUS];
 
 extern void ia64_tlb_init (void);
 
@@ -93,11 +98,13 @@ ia64_mmu_init (void *my_cpu_data)
 
        cpu = smp_processor_id();
 
-#ifndef XEN
        /* mca handler uses cr.lid as key to pick the right entry */
        ia64_mca_tlb_list[cpu].cr_lid = ia64_getreg(_IA64_REG_CR_LID);
 
        /* insert this percpu data information into our list for MCA recovery purposes */
+#ifdef XEN
+       ia64_mca_tlb_list[cpu].percpu_paddr = __pa(my_cpu_data);
+#else
        ia64_mca_tlb_list[cpu].percpu_paddr = pte_val(mk_pte_phys(__pa(my_cpu_data), PAGE_KERNEL));
        /* Also save per-cpu tlb flush recipe for use in physical mode mca handler */
        ia64_mca_tlb_list[cpu].ptce_base = local_cpu_data->ptce_base;